<!DOCTYPE html>
<html lang="en">
<script src="../../js/vue.js"></script>
<head>
    <meta charset="UTF-8">
    <title>列表排序</title>
</head>
<body>
<div id="root">
  <h2>列表排序</h2>
  <input type="text" placeholder="请输入名字" v-model="keyWord">
  <button @click="sortType = 2">年龄升序</button>
  <button @click="sortType = 1">年龄降序</button>
  <button @click="sortType = 0">原顺序</button>
  <ul>
    <li v-for="(p,index) of filPersons" :key="p.id">
      {{p.name}}-{{p.age}}-{{p.sex}}
    </li>
  </ul>
</div>

<script>
  new Vue({
    el:'#root',
    data:{
      persons:[
        {id:'001',name:'马冬梅',age:30,sex:'女'},
        {id:'002',name:'周冬雨',age:45,sex:'女'},
        {id:'003',name:'周杰伦',age:21,sex:'男'},
        {id:'004',name:'温兆伦',age:22,sex:'男'}
      ],
      keyWord:'',
      sortType:0,//0代表原顺序，1代表升序，3代表降序
    },
    computed:{
      filPersons(){
        const arr = this.persons.filter((p)=>{
          return p.name.indexOf(this.keyWord) !== -1
        })

        if(this.sortType){
          arr.sort((a, b)=>{  //p1-p2,升序排序,从小到大 p2-p1:逆序排序,从大到小
            return this.sortType ===1 ? b.age-a.age : a.age-b.age
          })
        }
        return arr
      }
    }
  })
</script>
</body>
</html>